home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok56 / m2maker / txt / requesterwindow.mod < prev    next >
Text File  |  1993-11-04  |  16KB  |  376 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.    m2Maker
  3.   :Author.     Thomas Stolze
  4.   :Address.    Goslarsche Str. 32, 3000 Hannover 21, Germany
  5.   :Phone.      (0)511 / 75 10 77
  6.   :Version.    V2.0
  7.   :Date.       10-Nov-90
  8.   :Copyright.  Shareware
  9.   :Language.   Modula-2
  10.   :Translator. M2Amiga V3.32d
  11.   :Contents.   Programming Utility.
  12.   :Remark.     Supports the M2Amiga System (C) by A+L AG Switzerland
  13. ---------------------------------------------------------------------------*)
  14.  
  15. IMPLEMENTATION MODULE RequesterWindow;
  16.  
  17. FROM Arts             IMPORT Assert;
  18. FROM ExecL            IMPORT GetMsg,ReplyMsg,WaitPort;
  19. FROM GraphicsD        IMPORT DrawModeSet,jam1,jam2,RastPortPtr;
  20. FROM GraphicsL        IMPORT Move,RectFill,SetAPen,SetBPen,SetDrMd,Text;
  21. FROM InitIntuition    IMPORT prgPtr;
  22. FROM IntuitionD       IMPORT ActivationFlagSet,ActivationFlags,
  23.                              Gadget,GadgetFlags,GadgetFlagSet,GadgetPtr,
  24.                              IDCMPFlags,IDCMPFlagSet,IntuiMessagePtr,
  25.                              IntuiText,IntuiTextPtr,MenuItemFlags,
  26.                              MenuItemFlagSet,NewWindow,Preferences,
  27.                              PreferencesPtr,BorderPtr,boolGadget,Border,
  28.                              ScreenFlags,ScreenFlagSet,strGadget,StringInfo,
  29.                              WindowFlags,WindowFlagSet,WindowPtr,ScreenPtr,
  30.                              customScreen;
  31. FROM IntuitionL       IMPORT AddGadget,
  32.                              AddGList,CloseWindow,
  33.                              OpenWindow,
  34.                              PrintIText,RefreshGadgets,
  35.                              UnlockIBase;
  36. FROM IntuitionSupport IMPORT SetBorder,SetBorderKoord,SetGadget,SetInfo,
  37.                              SetIText,SetWindow;
  38. FROM SYSTEM           IMPORT ADDRESS,ADR,CAST,LONGSET,SHIFT,WORD;
  39.  
  40. CONST help1 = "Functions:";
  41.       help2 = "F1  ==> Editor     F6  ==> M2Make      ^q ==> Quit";
  42.       help3 = "F2  ==> Compiler   F7  ==> Debug End   ^c ==> NewShell";
  43.       help4 = "F3  ==> Linker     F8  ==> ModuleTOOL  ^l ==> Dir";
  44.       help5 = "F4  ==> Run        F9  ==> Print       ^p ==> Project";
  45.       help6 = "F5  ==> Make      F10  ==> Dir     LSHIFT+CTRL+SPACE";
  46.       help7 = "P   ==> ParentDir   O  ==> Ok      RETURN ==> Select";
  47.       help8 = "D   ==> Device      C  ==> Cancel  HELP   ==> Info";
  48.  
  49.  
  50. VAR window : WindowPtr;
  51.  
  52. PROCEDURE ShowRequest(titleptr : ADDRESS;
  53.                       x,y,w,h  : INTEGER;
  54.                       textptr  : IntuiTextPtr;
  55.                       gadgptr  : GadgetPtr;
  56.                       screen   : ScreenPtr;
  57.                       cancel   : BOOLEAN): BOOLEAN;
  58.  
  59. CONST action = ActivationFlagSet{gadgImmediate,relVerify};
  60.  
  61.   PROCEDURE Block(rport : RastPortPtr; col,x1,y1,x2,y2 : INTEGER);
  62.   BEGIN
  63.     SetAPen(rport,col); SetDrMd(rport,jam2); RectFill(rport,x1,y1,x2,y2);
  64.   END Block;
  65.  
  66. VAR nw         : NewWindow;
  67.     gPtr       : GadgetPtr;
  68.     ptr        : IntuiTextPtr;
  69.     msg        : IntuiMessagePtr;
  70.     response   : BOOLEAN;
  71.     code       : CARDINAL;
  72.     class      : IDCMPFlagSet;
  73.     pos        : INTEGER;
  74.     bordptr    : BorderPtr;
  75.     GadgetText : ARRAY [0..1] OF IntuiText;
  76.     Gadgets    : ARRAY [0..1] OF Gadget;
  77.     border     : Border;
  78.     coor       : ARRAY [0..9] OF INTEGER;
  79. BEGIN
  80.   ptr:=SetIText(GadgetText[0],ADR("  OK  "),2,1,1,2,jam2);
  81.   ptr:=SetIText(GadgetText[1],ADR("CANCEL"),2,1,1,2,jam2);
  82.  
  83.   SetWindow(nw,x,y,w,h,0,1,IDCMPFlagSet{gadgetUp,closeWindow,mouseButtons,
  84.                                         vanillaKey},
  85.             WindowFlagSet{windowDepth,activate,windowActive,windowClose,
  86.                           windowRefresh},
  87.             titleptr,NIL,NIL,-1,-1,20,40,ScreenFlagSet{wbenchScreen});
  88.  
  89.   IF screen # NIL THEN nw.screen:=screen; nw.type:=customScreen; END;
  90.  
  91.   SetGadget(Gadgets[0],20,-18,50,10,GadgetFlagSet{gRelBottom},
  92.             action,boolGadget,ADR(border),ADR(GadgetText[0]),NIL,0);
  93.   SetGadget(Gadgets[1],w-70,-18,50,10,GadgetFlagSet{gRelBottom},
  94.             action,boolGadget,ADR(border),ADR(GadgetText[1]),NIL,1);
  95.   bordptr:=SetBorder(border,-1,-1,2,0,5,jam1,ADR(coor));
  96.   SetBorderKoord(coor,Gadgets[0]);
  97.  
  98.   window:=OpenWindow(nw);
  99.     Assert(window # NIL,ADR("Couldn't open Requester!"));
  100.   Block(window^.rPort,1,4,11,w-5,h-3);
  101.   PrintIText(window^.rPort,textptr,0,0);
  102.  
  103.   IF cancel THEN
  104.      pos:=AddGadget(window,ADR(Gadgets[1]),-1);
  105.   ELSE
  106.      Gadgets[0].leftEdge:=w-70;
  107.   END;
  108.   pos:=AddGadget(window,ADR(Gadgets[0]),-1);
  109.   IF (gadgptr # NIL) THEN pos:=AddGList(window,gadgptr,-1,20,NIL) END;
  110.   RefreshGadgets(window^.firstGadget,window,NIL);
  111.  
  112.   LOOP
  113.     response:=FALSE;
  114.     WaitPort(window^.userPort);
  115.       msg:=GetMsg(window^.userPort);
  116.       class:=msg^.class;
  117.       code:=msg^.code;
  118.        gPtr:=msg^.iAddress;
  119.     ReplyMsg(msg);
  120.  
  121.     IF (closeWindow IN class) THEN
  122.        response:=FALSE; EXIT;
  123.     ELSIF (gadgetUp IN class) THEN
  124.        CASE gPtr^.gadgetID OF
  125.          0 : response:=TRUE;  EXIT;
  126.        | 1 : response:=FALSE; EXIT;
  127.        ELSE
  128.        END;
  129.     ELSIF (vanillaKey IN class) THEN
  130.        CASE code OF
  131.          13,ORD("y"),ORD("Y"),ORD("j"),ORD("J"),
  132.             ORD("o"),ORD("O")                   : response:=TRUE;  EXIT;
  133.        | ORD("n"),ORD("N"),ORD("c"),ORD("C"):     response:=FALSE; EXIT;
  134.        ELSE
  135.        END;
  136.     END;
  137.   END;
  138.   CloseWindow(window); window:=NIL;
  139.   RETURN response;
  140. END ShowRequest;
  141.  
  142. PROCEDURE DeleteFileRequester(str : ARRAY OF CHAR): BOOLEAN;
  143. VAR text : ARRAY [0..1] OF IntuiText;
  144.     ptr  : IntuiTextPtr;
  145. BEGIN
  146.   ptr:=SetIText(text[0],ADR("Delete this file ?"),3,1,40,22,jam2);
  147.   text[0].nextText:=SetIText(text[1],ADR(str),2,1,40,35,jam2);
  148.  
  149.   RETURN ShowRequest(ADR("Delete File:"),160,20,320,70,ptr,NIL,NIL,TRUE);
  150.  
  151. END DeleteFileRequester;
  152.  
  153. PROCEDURE RenameFileRequester(VAR str : ARRAY OF CHAR): BOOLEAN;
  154. VAR gad     : Gadget;
  155.     text    : IntuiText;
  156.     tptr    : IntuiTextPtr;
  157.     border  : Border;
  158.     bordptr : BorderPtr;
  159.     coor    : ARRAY [0..9] OF INTEGER;
  160.     info    : StringInfo;
  161.     dummy   : ARRAY [0..31] OF CHAR;
  162. BEGIN
  163.   bordptr:=SetBorder(border,-1,-1,2,0,5,jam2,ADR(coor));
  164.   SetInfo(info,ADR(str),ADR(dummy),0,30,0);
  165.   SetGadget(gad,40,35,232,8,GadgetFlagSet{},
  166.              ActivationFlagSet{relVerify,gadgImmediate,toggleSelect},
  167.              strGadget,bordptr,NIL,ADR(info),2);
  168.   SetBorderKoord(coor,gad);
  169.   tptr:=SetIText(text,ADR("Enter new Name:"),2,1,40,22,jam2);
  170.  
  171.   RETURN ShowRequest(ADR("Rename File:"),160,20,320,70,tptr,ADR(gad),NIL,TRUE);
  172. END RenameFileRequester;
  173.  
  174. PROCEDURE OptionRequester;
  175. CONST actions     = ActivationFlagSet{relVerify,gadgImmediate,toggleSelect};
  176.       gadgetFlags = GadgetFlagSet{};
  177.  
  178. VAR dummy       : ARRAY [0..12],[0..150] OF CHAR;
  179.     Text        : ARRAY [0..12] OF IntuiText;
  180.     GadgetArray : ARRAY [0..12] OF Gadget;
  181.     Infos       : ARRAY [0..12] OF StringInfo;
  182.     coor        : ARRAY [0..0],[0..12] OF INTEGER;
  183.     border      : ARRAY [0..0] OF Border;
  184.     ptr         : IntuiTextPtr;
  185.     bptr        : BorderPtr;
  186.     bool        : BOOLEAN;
  187.     i           : INTEGER;
  188. BEGIN
  189.   ptr:=SetIText(Text[0],ADR("M2Emacs {+-bcdilr   -gpt}")     ,2,0,15, 17,jam1);
  190.   ptr:=SetIText(Text[1],ADR("M2C   {+-cdefhilnpqrsvwyz}")    ,2,0,15, 29,jam1);
  191.   ptr:=SetIText(Text[2],ADR("M2L     {+-acdimqrx -lst}")     ,2,0,15, 41,jam1);
  192.   ptr:=SetIText(Text[3],ADR("M2Project {+-bimorst}")         ,2,0,15, 53,jam1);
  193.   ptr:=SetIText(Text[4],ADR("M2Make  {+-dfilnpqw -cost}")    ,2,0,15, 65,jam1);
  194.   ptr:=SetIText(Text[5],ADR("M2Debugger  {}")                   ,2,0,15, 77,jam1);
  195.   ptr:=SetIText(Text[6],ADR("KillM2Debug {}")               ,2,0,15, 89,jam1);
  196.   ptr:=SetIText(Text[7],ADR("M2Pool      {-g}")                 ,2,0,15,101,jam1);
  197.   ptr:=SetIText(Text[12],ADR("M2Ohm")                        ,2,0,15,113,jam1);
  198.   ptr:=SetIText(Text[8],ADR("Print Utility")                 ,0,0,15,125,jam1);
  199.   ptr:=SetIText(Text[9],ADR("FastLister")                    ,0,0,15,137,jam1);
  200.   ptr:=SetIText(Text[10],ADR("User Track I")                 ,0,0,15,149,jam1);
  201.   ptr:=SetIText(Text[11],ADR("User Track II")                ,0,0,15,161,jam1);
  202.  
  203.  
  204.   FOR i:=1 TO 12 DO Text[i-1].nextText:=ADR(Text[i]) END;
  205.  
  206.   SetGadget(GadgetArray[0],236,17,344,8,gadgetFlags,
  207.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[0]),2);
  208.   SetGadget(GadgetArray[1],236,29,344,8,gadgetFlags,
  209.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[1]),3);
  210.   SetGadget(GadgetArray[2],236,41,344,8,gadgetFlags,
  211.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[2]),4);
  212.   SetGadget(GadgetArray[3],236,53,344,8,gadgetFlags,
  213.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[3]),5);
  214.   SetGadget(GadgetArray[4],236,77,344,8,gadgetFlags,
  215.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[4]),6);
  216.   SetGadget(GadgetArray[5],236,89,344,8,gadgetFlags,
  217.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[5]),7);
  218.   SetGadget(GadgetArray[6],236,101,344,8,gadgetFlags,
  219.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[6]),8);
  220.   SetGadget(GadgetArray[7],236,125,344,8,gadgetFlags,
  221.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[7]),9);
  222.   SetGadget(GadgetArray[8],236,137,344,8,gadgetFlags,
  223.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[8]),10);
  224.   SetGadget(GadgetArray[9],236, 65,344,8,gadgetFlags,
  225.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[9]),11);
  226.   SetGadget(GadgetArray[10],236,149,344,8,gadgetFlags,
  227.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[10]),12);
  228.   SetGadget(GadgetArray[11],236,161,344,8,gadgetFlags,
  229.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[11]),13);
  230.   SetGadget(GadgetArray[12],236,113,344,8,gadgetFlags,
  231.              actions,strGadget,ADR(border[0]),NIL,ADR(Infos[12]),14);
  232.  
  233.   FOR i:=1 TO 12 DO GadgetArray[i-1].nextGadget:=ADR(GadgetArray[i]) END;
  234.  
  235.   SetInfo(Infos[0],ADR(prgPtr^.BufferString[ 4]),ADR(dummy[0]),0,149,0);
  236.   SetInfo(Infos[1],ADR(prgPtr^.BufferString[ 5]),ADR(dummy[1]),0,149,0);
  237.   SetInfo(Infos[2],ADR(prgPtr^.BufferString[ 6]),ADR(dummy[2]),0,149,0);
  238.   SetInfo(Infos[3],ADR(prgPtr^.BufferString[ 7]),ADR(dummy[3]),0,149,0);
  239.   SetInfo(Infos[4],ADR(prgPtr^.BufferString[ 8]),ADR(dummy[4]),0,149,0);
  240.   SetInfo(Infos[5],ADR(prgPtr^.BufferString[ 9]),ADR(dummy[5]),0,149,0);
  241.   SetInfo(Infos[6],ADR(prgPtr^.BufferString[10]),ADR(dummy[6]),0,149,0);
  242.   SetInfo(Infos[7],ADR(prgPtr^.BufferString[11]),ADR(dummy[7]),0,149,0);
  243.   SetInfo(Infos[8],ADR(prgPtr^.BufferString[12]),ADR(dummy[8]),0,149,0);
  244.   SetInfo(Infos[9],ADR(prgPtr^.BufferString[13]),ADR(dummy[9]),0,149,0);
  245.   SetInfo(Infos[10],ADR(prgPtr^.BufferString[14]),ADR(dummy[10]),0,149,0);
  246.   SetInfo(Infos[11],ADR(prgPtr^.BufferString[15]),ADR(dummy[11]),0,149,0);
  247.   SetInfo(Infos[12],ADR(prgPtr^.BufferString[16]),ADR(dummy[12]),0,149,0);
  248.  
  249.   SetBorderKoord(coor[0],GadgetArray[0]);
  250.   bptr:=SetBorder(border[0],-1,-1,3,0,5,jam1,ADR(coor[0]));
  251.  
  252.   bool:=ShowRequest(ADR("m2Maker Options:"),20,6,600,194,ADR(Text[0]),
  253.                     ADR(GadgetArray[0]),NIL,FALSE);
  254. END OptionRequester;
  255.  
  256. PROCEDURE InfoRequester;
  257. VAR  ptr  : IntuiTextPtr;
  258.      Text : ARRAY [0..7] OF IntuiText;
  259.      bool : BOOLEAN;
  260. BEGIN
  261.    ptr:=SetIText(Text[0],ADR("The "),2,0,25,20,jam1);
  262.    Text[0].nextText:=SetIText(Text[1],
  263.               ADR("m2Maker"),0,0,57,20,jam1);
  264.    Text[1].nextText:=SetIText(Text[2],
  265.               ADR('is a "Shareware-Program".'),2,0,129,20,jam1);
  266.    Text[2].nextText:=SetIText(Text[3],
  267.     ADR("If you like my program send me please"),2,0,25,32,jam1);
  268.    Text[3].nextText:=SetIText(Text[4],
  269.     ADR("DM 20,-, $10 (or more ...) to "),2,0,25,44,jam1);
  270.    Text[4].nextText:=SetIText(Text[5],
  271.     ADR("   Thomas Stolze , Goslarsche Str. 32"),0,0,25,56,jam1);
  272.    Text[5].nextText:=SetIText(Text[6],
  273.     ADR("      3000 Hannover 21 , Germany"),0,0,25,66,jam1);
  274.    Text[6].nextText:=SetIText(Text[7],
  275.     ADR("Copyright by Thomas Stolze         © Feb. 1991"),2,0,25,78,jam1);
  276.  
  277.   bool:=ShowRequest(ADR("m2Maker Info:"),80,20,480,102,ptr,NIL,NIL,FALSE);
  278. END InfoRequester;
  279.  
  280. PROCEDURE LoadProjectRequester(VAR str : ARRAY OF CHAR): BOOLEAN;
  281. VAR tptr     : IntuiTextPtr;
  282.     text     : ARRAY [0..1] OF IntuiText;
  283.     gad      : Gadget;
  284.     border   : Border;
  285.     bordptr  : BorderPtr;
  286.     coor     : ARRAY [0..9] OF INTEGER;
  287.     info     : StringInfo;
  288.     dummy    : ARRAY [0..31] OF CHAR;
  289. BEGIN
  290.   bordptr:=SetBorder(border,-1,-1,2,0,5,jam2,ADR(coor));
  291.   SetInfo(info,ADR(str),ADR(dummy),0,30,0);
  292.   SetGadget(gad,90,40,232,8,GadgetFlagSet{},
  293.             ActivationFlagSet{relVerify,gadgImmediate,toggleSelect},
  294.             strGadget,bordptr,NIL,ADR(info),2);
  295.   SetBorderKoord(coor,gad);
  296.  
  297.   tptr:=SetIText(text[0],ADR("Please enter Directory:"),2,1,20,22,jam2);
  298.    text[0].nextText:=SetIText(text[1],ADR("Project:"),0,1,20,40,jam2);
  299.  
  300.   RETURN ShowRequest(ADR("Load Project:"),150,20,340,82,tptr,ADR(gad),NIL,TRUE);
  301. END LoadProjectRequester;
  302.  
  303. PROCEDURE DeleteProjectRequester(str : ARRAY OF CHAR): BOOLEAN;
  304. VAR text : ARRAY [0..1] OF IntuiText;
  305.     ptr  : IntuiTextPtr;
  306. BEGIN
  307.   ptr:=SetIText(text[0],ADR("Do you want to delete this Project ?"),
  308.                         3,1,17,22,jam2);
  309.   text[0].nextText:=SetIText(text[1],ADR(str),2,1,40,39,jam2);
  310.  
  311.   RETURN ShowRequest(ADR("Delete Project:"),160,20,320,82,ptr,NIL,NIL,TRUE);
  312.  
  313. END DeleteProjectRequester;
  314.  
  315. PROCEDURE HelpRequester;
  316. VAR  ptr  : IntuiTextPtr;
  317.      Text : ARRAY [0..7] OF IntuiText;
  318.      bool : BOOLEAN;
  319. BEGIN
  320.                 ptr:=SetIText(Text[0],ADR(help1),2,0,25,20,jam1);
  321.    Text[0].nextText:=SetIText(Text[1],ADR(help2),0,0,25,32,jam1);
  322.    Text[1].nextText:=SetIText(Text[2],ADR(help3),0,0,25,44,jam1);
  323.    Text[2].nextText:=SetIText(Text[3],ADR(help4),0,0,25,56,jam1);
  324.    Text[3].nextText:=SetIText(Text[4],ADR(help5),0,0,25,68,jam1);
  325.    Text[4].nextText:=SetIText(Text[5],ADR(help6),0,0,25,80,jam1);
  326.    Text[5].nextText:=SetIText(Text[6],ADR(help7),2,0,25,104,jam1);
  327.    Text[6].nextText:=SetIText(Text[7],ADR(help8),2,0,25,116,jam1);
  328.  
  329.   bool:=ShowRequest(ADR("HELP Info:"),80,20,480,147,ptr,NIL,NIL,FALSE);
  330. END HelpRequester;
  331.  
  332. PROCEDURE M2EmacsRequester(txt : ADDRESS; screen : ScreenPtr);
  333. VAR  ptr  : IntuiTextPtr;
  334.      Text : ARRAY [0..2] OF IntuiText;
  335.      bool : BOOLEAN;
  336. BEGIN
  337.    ptr:=SetIText(Text[0],ADR("Error in file:"),2,0,25,20,jam1);
  338.    Text[0].nextText:=SetIText(Text[1],txt,3,0,25,32,jam1);
  339.    Text[1].nextText:=SetIText(Text[2],ADR("Change your current textbuffer !"),
  340.                               2,0,25,44,jam1);
  341.  
  342.   bool:=ShowRequest(ADR("M2c to M2Emacs:"),160,20,320,82,ptr,NIL,screen,FALSE);
  343. END M2EmacsRequester;
  344.  
  345. PROCEDURE M2LErrorRequester(txt : ADDRESS; screen : ScreenPtr);
  346. VAR  ptr  : IntuiTextPtr;
  347.      Text : ARRAY [0..2] OF IntuiText;
  348.      bool : BOOLEAN;
  349. BEGIN
  350.  ptr:=SetIText(Text[0],ADR("Key problems or file not compiled:"),2,0,25,20,jam1);
  351.  Text[0].nextText:=SetIText(Text[1],txt,3,0,25,32,jam1);
  352.  Text[1].nextText:=SetIText(Text[2],ADR("Start M2Make to handle problems !"),
  353.                             2,0,25,44,jam1);
  354.  
  355.  bool:=ShowRequest(ADR("M2L to M2Emacs:"),160,20,320,82,ptr,NIL,screen,FALSE);
  356. END M2LErrorRequester;
  357.  
  358. PROCEDURE TouchRequester(): BOOLEAN;
  359. VAR  ptr  : IntuiTextPtr;
  360.      Text : ARRAY [0..2] OF IntuiText;
  361. BEGIN
  362.  ptr:=SetIText(Text[0],ADR("All files will be touched !"),2,0,25,20,jam1);
  363.  Text[0].nextText:=SetIText(Text[1],ADR("M2Make will compile all files new!"),
  364.                    3,0,25,32,jam1);
  365.  Text[1].nextText:=SetIText(Text[2],ADR("No datas will be lost. Don't worry!"),
  366.                             2,0,25,44,jam1);
  367.  
  368.  RETURN ShowRequest(ADR("Touch Requester:"),160,20,320,82,ptr,NIL,NIL,TRUE);
  369. END TouchRequester;
  370.  
  371. BEGIN
  372. CLOSE
  373.   IF (window # NIL) THEN CloseWindow(window); window:=NIL; END;
  374. END RequesterWindow.
  375.  
  376.